"W映射w
                 cnoreabbrev W w
                 cnoreabbrev plug PlugInstall 
                 cnoreabbrev sep set paste  
                 ""纯文本粘贴
                 cnoreabbrev ft  FloatermNew!  
                 ""浮动shell
                 cnoreabbrev FT  FloatermToggle   
                 ""浮动shell
nnoremap j gj
nnoremap k gk
"nore ：表示非递归（no recursion）
"n：表示正常模式下生效
"v：表示可视模式下生效
"i：表示插入模式下生效
"c：表示命令模式下生效

"按= 自动缩进对齐
"noremap = :call Indent()<cr><cr>
noremap = :Format<cr>
func! Indent()
             exec "!indent -kr -i8 %"  
             exec "!rm %\~"
             endfunc

map _ :CocList extensions<cr>
"coc查看已安装插件
map % :CocList marketplace<cr>
"coc安装子插件

map " :colorscheme<space>
"按按双引号更换主题
map m  :bn<cr>  
"m切换buffer

imap <c-x> <Esc>:wq<cr>   
map <c-x> :wq<cr>
"c-x保存退出

imap <c-z> <Esc>:q<cr>
map <c-z> :q<cr>
"ctrl-z不保存退出

map <C-F3> :lea<cr>
"在vim搜索文件并打开
map <leader>k :g/^\s*$/d
"\k选择空行
nnoremap <C-j> :vert diffsplit<cr>
"c-j比较文件

map <leader>e :tabnew<CR>
"\e新建标签
map <leader>x :Ex<cr>
"\x列出当前目录文件(包括隐藏文件)
map <leader>. :tabnew .<CR>
"\.打开树状文件目录
map <leader>n :NERDTreeToggle<CR>
"\n打开侧边目录树

nnoremap <leader>t :TagbarToggle<CR>
"tagber打开按 \t代码块显示
vmap v <Plug>(expand_region_expand)
vmap V <Plug>(expand_region_shrink)
"expand-region 区域选中插件的可视模式下缩放

map <F5> :call CompileRunGcc()<cr>
imap <F5>  <ESC>:call CompileRunGcc()<CR>
"C，C++ 按F5编译运行
func! CompileRunGcc()
                 exec "w"
                 if &filetype == 'c'
                 	exec "!g++  % -o %< -g"
                 	exec "! ./%< "
                 elseif &filetype == 'cpp'
                 	exec "!g++   % -o %<  -g"
                 	exec "! ./%<"
                 elseif &filetype == 'java'
                 	exec "!javac %"
                 	exec "!java %<"
                 elseif &filetype == 'sh'
                 	:!./%
                 endif
                 endfunc
"C,C++的调试按(F8)打开gdb
map <F8> :call Rungdb()<CR>
imap <F8> <ESC>:call Rungdb()<CR>
func! Rungdb()
                 exec "w"
                 exec "!g++ % -g -o %<"
                 exec "!gdb ./%<"
                 endfunc

"以下为vim-plug插件管理器
call plug#begin('~/.vim/bundle')
                 "floaterm是vim浮动终端
                 Plug 'voldikss/vim-floaterm'
                 "rainbow彩虹括号
                 Plug 'frazrepo/vim-rainbow'
                "coc.nvim自动补全
				 Plug 'neoclide/coc.nvim', {'branch': 'release'}
                 "indentLine垂直缩进线
                 Plug 'Yggdroot/indentLine'
                 Plug 'jiangmiao/auto-pairs'
                 "auto-pairs成对插入或删除括号
                 Plug 'preservim/nerdcommenter'
				 "nerdcommenter快速注释
                 "vim底部美化标线
                 Plug 'vim-airline/vim-airline'
                 "vim-nerdtree目录树
                 Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' }
                 Plug 'preservim/nerdtree'
				 Plug 'mg979/vim-visual-multi',{'branch':'master'}
				 "vim-visual-multi多光标
				 Plug 'terryma/vim-expand-region'
				 "expand快选括号内词
call plug#end()

colorscheme snazzy 
"让leader键为'\'
let mapleader = '\'
set wildmenu "Vim命令行提示增强模式中的命令行自动完成操作
"set paste
set cul "高亮当时前行"
"set cuc
"高亮当时前列
set hidden "许有未保存的修改时切换缓冲区此修改vim保存
set tm=500
set t_Co=256  "显示 256 色，很多主题插件都需要打开它。

set t_ti= t_te=
set backspace=indent,eol,start  " 智能回删"
"使用系统剪切相关
set completeopt=preview,menu
set nu              " 显示行号
"set go= 
" 不要图形按钮
set guifont=Courier_New:h10:cANSI   " 设置字体
set ruler     "显示标尺
set showcmd  "输入的命令显示出来，看的清楚些
"set novisualbell 
"关掉可视化响铃报警
set laststatus=0    "启动显示状态行(1),总是显示状态行(2)
"设置C/C++语言的具体缩进方式(以我的windows风格为例)
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
set autoindent "启用自动缩进
set cindent
" 命令行（在状态行下）的高度，默认为1
set cmdheight=1
"Tab键的宽度
set tabstop=4
"统一缩进为4
set softtabstop=-1 "按删除键删除4个tab转换的空格，应和tabstop一致"
set shiftwidth=4  "继承前一行的缩进方式，适用于多行注释"
set expandtab
"expandtab用空格代替制表符(不用时no)
"在行和段开始处使用制表符
set smarttab
set foldenable  " 允许折叠，折叠方式只能一种
set foldmethod=indent "更多缩进表示更高折叠;marker标志折叠;manual手动折叠按zf折叠zf10向下折叠10行；
set foldcolumn=0 "设置折叠区域的宽度
set foldlevel=2 "设置折叠层数

"set relativenumber 
"显示相对行号；

"set background=dark 
"背景使用黑色

" 设置当文件被改动时自动载入
set autoread
"共享剪贴板
set clipboard+=unnamed
"make 运行
set makeprg=g++\ -Wall\ \ %
set autowrite "自动保存
set magic  " 设置魔术

"set guioptions-=T  
"隐藏工具栏
"set guioptions-=m     
"隐藏菜单栏
set virtualedit=block,onemore "许光标在最后一个字符后面
" 不要使用vi的键盘模式，而是vim自己的
set nocompatible
set visualbell "输入错误屏幕闪

"去掉输入错误的提示声音
"set noeb
" 在处理未保存或只读文件的时候，弹出确认
set confirm
"历史记录数
set history=1000
set noswapfile
"搜索忽略大小写
set ignorecase
"智能匹配与ignorecase搭配智能分辨搜索大小写
set smartcase
"搜索逐字符高亮
set hlsearch
set incsearch "光标立刻跳转到搜索到内容
"行内替换
set gdefault

" 默认按下Esc后,需要等待1秒才生效,
" 设置Esc超时时间为100ms,尽快生效
set ttimeout
set ttimeoutlen=10

"设置编码
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936,big5,euc-jp,euc-kr,latin1
"fileencoding选项是Vim写入文件时采用的编码类型
set termencoding=utf-8 "termencoding选项表示输出到终端时采用的编码类型"

"set autochdir 
"自动的切换工作目录

"带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-

" 字符间插入的像素行数目
set linespace=0
" 使回格键（backspace）正常处理indent, eol, start等  
set backspace=2
" 允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
" 可以在buffer的任何地方使用鼠标（类似office中在工作区双击鼠标定位）
"开启鼠标 
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 通过使用: commands命令，告诉我们文件的哪一行被改变过
set report=0
" 在被分割的窗口间显示空白，便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间（单位是十分之一秒）
set matchtime=1
" 光标移动到buffer的顶部和底部时保持3行距离
"set scrolloff=3
" 为C程序提供自动缩进
set smartindent

set completeopt=longest,menu
"使用tab键缩进时，显出|___4个单位
"set list lcs=tab:\|_ 

if version >= 603
                 set helplang=cn
                 set encoding=utf-8
                 endif
syntax on "语法高亮
syntax enable
" 侦测文件类型
filetype plugin indent on
"打开文件类型检测, 加了这句才可以用智能补全

"rainbow彩虹括号彩虹括号启用插件类型文件
au FileType json,c,cpp,objc,objcpp call rainbow#load()
au Filetype FILETYPE let b:AutoPairs = {"(": ")"}
au FileType php      let b:AutoPairs = AutoPairsDefine({'<?' : '?>', '<?php': '?>'})
autocmd BufWritePost $MYVIMRC source $MYVIMRC  "让配置立即生效
autocmd FileType json syntax match Comment +\/\/.\+$+

"autocmd InsertLeave * se nocul 
"用浅色高亮当前行
"
autocmd InsertEnter * se cul  "用浅色高亮当前行
autocmd FileType java set tags+=D:\tools\java\tags
autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags

"quickfix模式
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
"代码补全
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
"高亮显示普通txt文件（需要txt.vim脚本）
"自动补全
au BufRead,BufNewFile *  setfiletype txt
                 :inoremap ( ()<ESC>i
                 :inoremap ) <c-r>=ClosePair(')')<CR>
                 :inoremap { {<CR>}<ESC>O
                 :inoremap } <c-r>=ClosePair('}')<CR>
                 :inoremap [ []<ESC>i
                 :inoremap ] <c-r>=ClosePair(']')<CR>
                 :inoremap " ""<ESC>i
                 :inoremap ' ''<ESC>i
                 function! ClosePair(char)
                 	if getline('.')[col('.') - 1] == a:char
                 		return "\<Right>"
                 	else
                 		return a:char
                 	endif
                 endfunction
"定义函数SetTitle，自动插入文件头
func SetTitle()
                 "如果文件类型为.sh文件
                 "新建.c,.h,.sh,.java文件，自动插入文件头
                 	if &filetype == 'sh'
                 		call setline(1,"\#################")
                 		call append(line("."), "\# File Name: ".expand("%"))
                 		call append(line(".")+1, "\# Author: ma6174")
                 		call append(line(".")+2, "\# mail: ma6174@163.com")
                 		call append(line(".")+3, "\# Created Time: ".strftime("%c"))
                 		call append(line(".")+4, "\############################")
                 		call append(line(".")+5, "\#!/bin/bash")
                 		call append(line(".")+6, "")
                 	else
                 		call setline(1, "// File Name:".expand("%"))
                 		call append(line("."), "#include<stdio.h>")
                 		"call append(line(".")+1, "    > Author: ma6174")
                 		"call append(line(".")+2, "    > Mail: ma6174@163.com ")
                 		"call append(line(".")+3, "    > Created Time: ".strftime("%c"))
                 		"call append(line(".")+4, " ******************/")
                 		"call append(line(".")+5, "")
                 	endif
                 	if &filetype == 'cpp'
                 		call append(line(".")+6, "#include<iostream>")
                 		call append(line(".")+7, "using namespace std;")
                 		call append(line(".")+8, "")
                 	endif
                 	if &filetype == 'c'
                 		call append(line(".")+1, "#include<math.h>")
                 		call append(line(".")+2, "#include<stdlib.h>")
                 		call append(line(".")+3, "int main(){        ")
                 		call append(line(".")+4, "                    ")
                 		call append(line(".")+5, "                    ")
                 		call append(line(".")+6, "     printf(\"Hello World!\");")
                 		call append(line(".")+7, "  return 0;")
                 		call append(line(".")+8, "}")
                 	endif
                 	"新建文件后，自动定位到文件末尾
                 	autocmd BufNewFile * normal G
                 endfunc

"""代码块可跳转需ctags的支持
let g:tagbar_type_go = {
	         	\ 'ctagstype' : 'go',
	         	\ 'kinds'     : [
				\ 'p:package', 
				\ 'i:imports:1',
				\ 'c:constants',
				\ 'v:variables',
				\ 't:types',
				\ 'n:interfaces',
				\ 'w:fields',
				\ 'e:embedded',         
				\ 'm:methods',
				\ 'r:constructor',
				\ 'f:functions'
				\ ],
				\ 'sro' : '.',
				\ 'kind2scope' : {
					\ 't' : 'ctype',
					\ 'n' : 'ntype'
					\ },
					\ 'scope2kind' : {
						\ 'ctype' : 't',
						\ 'ntype' : 'n'
						\ },
						\ 'ctagsbin'  : 'gotags',
						\ 'ctagsargs' : '-sort -silent'
						\ }

"设置tags
set tags=tags
"CTags的设定
let Tlist_Sort_Type = "name"    " 按照名称排序
let Tlist_Use_Right_Window = 1  " 在右侧显示窗口
let Tlist_Compart_Format = 1    " 压缩方式
let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer，kill窗口也kill掉buffer
let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags
let Tlist_Enable_Fold_Column = 1   " 不要显示折叠树

"let Tlist_Show_One_File=1   
"不同时显示多个文件的tag，只显示当前文件的

" Tag list (ctags)
"默认打开Taglist
let Tlist_Auto_Open=1
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag，只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口，则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
let g:indent_guides_enable_on_vim_startup = 1 "添加行，vim启动时启用
let g:indent_guides_start_level = 1 "添加行，开始显示对齐线的缩进级别
let g:indent_guides_guide_size = 1  "添加行，对齐线的宽度，（1字符）

"let g:indent_guides_tab_guides = 0 
"添加行，对tab对齐的禁用

"更改缩进字符
let g:indentLine_char = 'c'    
let g:indentLine_char_list = ['│','|','┆', '¦', '┊',':','.']
let g:indentLine_color_term = 255 "缩进相关”自定义隐藏颜色："

"minibufexpl插件的一般设置
"MiniBufExpl Colors
                hi MBENormal               guifg=#808080 guibg=fg
                hi MBEChanged              guifg=#CD5907 guibg=fg
                hi MBEVisibleNormal        guifg=#5DC2D6 guibg=fg
                hi MBEVisibleChanged       guifg=#F1266F guibg=fg
                hi MBEVisibleActiveNormal  guifg=#A6DB29 guibg=fg
                hi MBEVisibleActiveChanged guifg=#F1266F guibg=fg
                let g:miniBufExplMapWindowNavVim = 1
                let g:miniBufExplMapWindowNavArrows = 1
                let g:miniBufExplMapCTabSwitchBufs = 1
                let g:miniBufExplModSelTarget = 1

"rainbow彩虹括号配置
"自动启用插件，如果使用命令:RainbowToggle启用插件，则设为0
let g:rainbow_active = 1
let g:rainbow_conf = {
                    \'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],
                    \'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
                    \'operators': '_,_',
                    \'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
                    \'separately': {
			        \'*': {},
			        \'tex': {
					\'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],
					\},
					\'lisp': {
					\'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'],
					\},
					\'vim': {
					\'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/', 'start=/{/ end=/}/ fold', 'start=/(/ end=/)/ containedin=vimFuncBody', 'start=/\[/ end=/\]/ containedin=vimFuncBody', 'start=/{/ end=/}/ fold containedin=vimFuncBody'],
					\},
					\'html': {
					\'parentheses': ['start=/\v\<((area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|'."'".'[^'."'".']*'."'".'|[^ '."'".'"><=`]*))?)*\>/ end=#</\z1># fold'],
					\},
					\'css': 0,
					\ }
					\}

"LeaderF模糊查找官方配置
                 let g:Lf_PreviewInPopup = 1  "最好设置(不懂意思)
                 "启用弹出浮动窗口
                 let g:Lf_WindowPosition = 'popup'
                 "不要在正常模式下显示帮助
                 let g:Lf_HideHelp = 1
                 let g:Lf_UseCache = 0
                 let g:Lf_UseVersionControlTool = 0
                 let g:Lf_IgnoreCurrentBufferName = 1
                 " popup mode
                 let g:Lf_PreviewInPopup = 1
                 let g:Lf_StlSeparator = { 'left': "\ue0b0", 'right': "\ue0b2", 'font': "DejaVu Sans Mono for Powerline" }
                 let g:Lf_PreviewResult = {'Function': 0, 'BufTag': 0 }
                 let g:Lf_ShortcutF = "<leader>ff"
                 noremap <leader>fb :<C-U><C-R>=printf("Leaderf buffer %s", "")<CR><CR>
                 noremap <leader>fm :<C-U><C-R>=printf("Leaderf mru %s", "")<CR><CR>
                 noremap <leader>ft :<C-U><C-R>=printf("Leaderf bufTag %s", "")<CR><CR>
                 noremap <leader>fl :<C-U><C-R>=printf("Leaderf line %s", "")<CR><CR>
                 noremap <C-B> :<C-U><C-R>=printf("Leaderf! rg --current-buffer -e %s ", expand("<cword>"))<CR>
                 noremap <C-F> :<C-U><C-R>=printf("Leaderf! rg -e %s ", expand("<cword>"))<CR>
                 " search visually selected text literally
                 xnoremap gf :<C-U><C-R>=printf("Leaderf! rg -F -e %s ", leaderf#Rg#visual())<CR>
                 noremap go :<C-U>Leaderf! rg --recall<CR>
                 " should use `Leaderf gtags --update` first
                 let g:Lf_GtagsAutoGenerate = 0
                 let g:Lf_Gtagslabel = 'native-pygments'
                 noremap <leader>fr :<C-U><C-R>=printf("Leaderf! gtags -r %s --auto-jump", expand("<cword>"))<CR><CR>
                 noremap <leader>fd :<C-U><C-R>=printf("Leaderf! gtags -d %s --auto-jump", expand("<cword>"))<CR><CR>
                 noremap <leader>fo :<C-U><C-R>=printf("Leaderf! gtags --recall %s", "")<CR><CR>
                 noremap <leader>fn :<C-U><C-R>=printf("Leaderf gtags --next %s", "")<CR><CR>
                 noremap <leader>fp :<C-U><C-R>=printf("Leaderf gtags --previous %s", "")<CR><CR>

"coc.nvim配置
set shortmess+=c
                 "不要将消息传递给|ins-completion-menu|不懂意思
                 "始终显示符号列，否则每次诊断出现/解决时它都会改变文本
                 if has("nvim-0.5.0") || has("patch-8.1.1564")
                 	"最近，vim可以将符号列和数字列合并为一个
                 	set signcolumn=number
                 else
                 	set signcolumn=yes
                 endif
                 "使用制表符进行触发器补全，前置字符并导航
                 "注意：使用命令 ':verbose imap <tab>'
                 "确保选项卡没有被其他插件映射，然后再将其放入配置中
                 inoremap <silent><expr> <TAB>
                 			\ pumvisible() ? "\<C-n>" :
                 			\ <SID>check_back_space() ? "\<TAB>" :
                 			\ coc#refresh()
                 inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
                 
                 function! s:check_back_space() abort
                 	let col = col('.') - 1
                 	return !col || getline('.')[col - 1]  =~# '\s'
                 endfunction
                 "使用<c-space>触发补全。"
                 if has('nvim')
                 	inoremap <silent><expr> <c-space> coc#refresh()
                 else
                 	inoremap <silent><expr> <c-@> coc#refresh()
                 endif
                 "使 <CR> 自动选择第一个补全项并在进入时通知 coc.nvim
                 "enter，<cr> 可以被其他 vim 插件重新映射
                 inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
                 			\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
                 "使用 `[g` 和 `]g` 导航诊断
                 "使用 `:CocDiagnostics`获取位置列表中当前缓冲区的所有诊断信息。
                 nmap <silent> [g <Plug>(coc-diagnostic-prev)
                 nmap <silent> ]g <Plug>(coc-diagnostic-next)
                 "GoTo代码导航。
                 nmap <silent> gd <Plug>(coc-definition)
                 nmap <silent> gy <Plug>(coc-type-definition)
                 nmap <silent> gi <Plug>(coc-implementation)
                 nmap <silent> gr <Plug>(coc-references)
                 "使用K在预览窗口中显示文档
                 nnoremap <silent> K :call <SID>show_documentation()<CR>
                 
                 function! s:show_documentation()
                 	if CocAction('hasProvider', 'hover')
                 		call CocActionAsync('doHover')
                 	else
                 		call feedkeys('K', 'in')
                 	endif
                 endfunction
                 "当保持光标时，突出显示符号及其引用
                 autocmd CursorHold * silent call CocActionAsync('highlight')
                 "重命名象征
                 nmap <leader>rn <Plug>(coc-rename)
                 "格式化选择代码
                 xmap <leader>f  <Plug>(coc-format-selected)
                 nmap <leader>f  <Plug>(coc-format-selected)
                 
                 augroup mygroup
                 	autocmd!
                 	"设置formatexpr指定的文件类型
                 	autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
                 	"更新关于跳转占位符的签名帮助
                 	autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
                 augroup end
                 "将codeAction应用到选定的区域
                 "Example:例如:当前段落的' <leader>aap '
                 xmap <leader>a  <Plug>(coc-codeaction-selected)
                 nmap <leader>a  <Plug>(coc-codeaction-selected)
                 "重新映射用于将codeAction应用到当前缓冲区的键
                 nmap <leader>ac  <Plug>(coc-codeaction)
                 "对当前行上的问题应用AutoFix
                 nmap <leader>qf  <Plug>(coc-fix-current)
                 "在当前行上运行代码镜头操作
                 nmap <leader>cl  <Plug>(coc-codelens-action)
                 "映射函数和类文本对象
                 "NOTE:注意:需要“textDocument。documentSymbol'支持来自语言服务器
                 xmap if <Plug>(coc-funcobj-i)
                 omap if <Plug>(coc-funcobj-i)
                 xmap af <Plug>(coc-funcobj-a)
                 omap af <Plug>(coc-funcobj-a)
                 xmap ic <Plug>(coc-classobj-i)
                 omap ic <Plug>(coc-classobj-i)
                 xmap ac <Plug>(coc-classobj-a)
                 omap ac <Plug>(coc-classobj-a)
                 "为滚动浮动窗口/弹出窗口重新映射<C-f>和<C-b>
                 if has('nvim-0.4.0') || has('patch-8.2.0750')
                 	nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
                 	nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
                 	inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
                 	inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
                 	vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
                 	vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
                 endif
                 
                 "使用CTRL-S选择范围
                 "需要'textDocument/selectionRange'支持的语言服务器
                 nmap <silent> <C-l> <Plug>(coc-range-select)
                 xmap <silent> <C-l> <Plug>(coc-range-select)
                 "添加':Format '命令格式化当前缓冲区
                 command! -nargs=0 Format :call CocActionAsync('format')
                 "添加':Fold '命令折叠当前缓冲区
                 command! -nargs=? Fold :call     CocAction('fold', <f-args>)
                 "添加':OR '命令来组织当前缓冲区的导入
                 command! -nargs=0 OR   :call     CocActionAsync('runCommand', 'editor.action.organizeImport')
                 "添加(Neo)Vim的原生状态线支持
                 " NOTE:注意：请参阅 `:h coc-status` 以了解与外部插件的集成
                 " 提供自定义状态行：lightline.vim、vim-airline。
                 set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
                 "映射CoCList
                 "显示所有诊断信息。
                 nnoremap <silent><nowait> <space>a  :<C-u>CocList diagnostics<cr>
                 "管理扩展
                 nnoremap <silent><nowait> <space>e  :<C-u>CocList extensions<cr>
                 "显示命令
                 nnoremap <silent><nowait> <space>c  :<C-u>CocList commands<cr>
                 "查找当前文档的符号
                 nnoremap <silent><nowait> <space>o  :<C-u>CocList outline<cr>
                 "搜索空间符号
                 nnoremap <silent><nowait> <space>s  :<C-u>CocList -I symbols<cr>
                 "下一个项目是否有默认操作
                 nnoremap <silent><nowait> <space>j  :<C-u>CocNext<CR>
                 "前一项是否有默认操作
                 nnoremap <silent><nowait> <space>k  :<C-u>CocPrev<CR>
                 "简历最新的coc列表
                 nnoremap <silent><nowait> <space>p  :<C-u>CocListResume<CR>
         
                 
"airline配置
              let g:airline#extensions#tabline#enabled=1
              let g:airline_left_sep = '@'
              let g:airline_right_sep = ' '
